package com.wc.fortnight_blue_bridge.Q16模拟一.I_K数之和;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.StringTokenizer;
import java.io.InputStreamReader;


public class Main {
    /**
     * 【问题描述】
     * 小蓝有一个长度为 n 的整数数列 a[1], a[2], ..., a[n] 。
     * 对于一个给点的整数 k ，小蓝想找到相邻间隔为 1 的 k 个数 a[p], a[p+2], a[p+4], ..., a[p+2k-2]，使得他们的和最大。其中 1 <= p <= n-2k+2。
     * 给定数列和 k ，请问给出最大的和。
     *
     * 【输入格式】
     * 输入的第一行包含一个整数 n 。
     * 第二行包含 n 个整数，相邻数之间使用一个空格分隔，依次表示 a[1], a[2], ..., a[n] 。
     * 第三行包含一个整数 k 。
     *
     * 【输出格式】
     * 输出一行，包含一个整数，表示答案。
     *
     * 【样例输入】
     * 10
     * 2 1 4 7 4 8 3 6 4 7
     * 2
     * 【样例输出】
     * 15
     * 【样例说明】
     * 取 p=4，a[4]+a[6]=7+8=15 最大。
     *
     * 【评测用例规模与约定】
     * 对于 30% 的评测用例，1 <= k <= n <= 100 ， 1 <= a[i] <= 10000 。
     * 对于 60% 的评测用例，1 <= k <= n <= 3000 ， 1 <= a[i] <= 10000 。
     * 对于所有评测用例，1 <= k <= n <= 100000 ， 1 <= a[i] <= 1000000 。
     */
    static FastReader sc = new FastReader();
    static PrintWriter out = new PrintWriter(System.out);
    static int N = 100010;
    static int[] a = new int[N];
    static long[] s1 = new long[N], s2 = new long[N];
    static int n, k;

    public static void main(String[] args) {
        n = sc.nextInt();
        for (int i = 1; i <= n; i++) a[i] = sc.nextInt();

        for (int i = 1, j = 1; i <= n; i += 2, j++) s1[j] = s1[j - 1] + a[i];
        for (int i = 2, j = 1; i <= n; i += 2, j++) s2[j] = s2[j - 1] + a[i];

        k = sc.nextInt();
        long res = 0;
        for (int i = k; i <= (n + 1) / 2; i++){
            res = Math.max(res, s1[i] - s1[i - k]);
        }
        for (int i = k; i <= n / 2; i++){
            res = Math.max(res, s2[i] - s2[i - k]);
        }
        out.println(res);
        out.flush();
    }
}

class FastReader{
    StringTokenizer st;
    BufferedReader br;

    FastReader(){
        br = new BufferedReader(new InputStreamReader(System.in));
    }


    String nextLine(){
        try {
            return br.readLine();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }

    String next(){
        while (st == null || !st.hasMoreElements()){
            try {
                st = new StringTokenizer(br.readLine());
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return st.nextToken();
    }

    int nextInt(){
        return Integer.parseInt(next());
    }

    long nextLong(){
        return Long.parseLong(next());
    }

    boolean hasNext(){
        String s = null;
        while (st == null || !st.hasMoreElements()){
            s = nextLine();
            if (s == null) return false;
            st = new StringTokenizer(s);
        }
        return true;
    }
}
